﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WpfSnqkGasAnalysis.Model;

namespace WpfSnqkGasAnalysis.IData
{
    /// <summary>
    /// 气分析，数据接口
    /// </summary>
    /// 创建时间：2022-11-25 11:23:04；作者：王浩力
    public interface IGas_analysisDAL
    {
        /// <summary>
        /// 统计有多少个井，返回井列表
        /// </summary>
        /// <returns></returns>
        /// 创建时间：2023-1-18 09:41:42。作者：王浩力
        List<BaseModel> GetWellNoList();

        /// <summary>
        /// 检查编号是否重复了
        /// </summary>
        /// <param name="sampNo"></param>
        /// <returns></returns>
        /// 创建时间：2023-1-10 14:30:50
        bool CheckNo(string sampNo);

        /// <summary>
        /// 气分析，根据主键获取信息。一条
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns></returns>
        /// 创建时间：2022-11-25 14:32:41。作者：王浩力
        Gas_analysis Get(long id);

        /// <summary>
        /// 分页；气分析
        /// </summary>
        /// <param name="where">查询条件</param>
        /// <param name="p"></param>
        /// <param name="rows">页显示记录数</param>
        /// <returns></returns>
        /// 创建时间：2022-11-25 14:33:58。作者：王浩力
        PageModel<Gas_analysis> Page(Gas_analysis where, int p, int rows);

        /// <summary>
        /// 新增气分析
        /// </summary>
        /// <param name="gas_Analysis"></param>
        /// <returns></returns>
        /// 创建时间：2022-11-25 11:32:25。作者：王浩力
        Result Add(Gas_analysis gas_Analysis);

        /// <summary>
        /// 编辑。proofread=true为校对处理
        /// </summary>
        /// <param name="gas_Analysis"></param>
        /// <param name="proofread">true为校对处理</param>
        /// <returns></returns>
        /// 创建时间：2022-12-8 22:25:38。作者：王浩力
        IResult Update(Gas_analysis gas_Analysis, bool proofread = false);

        /// <summary>
        /// 修改o_step
        /// </summary>
        /// <param name="oStep"></param>
        /// <param name="id">主键</param>
        /// <returns></returns>
        /// 创建时间：2022-12-10 14:25:48。作者：王浩力
        IResult UpdateOstep(byte oStep, long id);

        /// <summary>
        /// 删除数据 。physicalDelete为true是物理删除数据
        /// </summary>
        /// <param name="id">主键</param>
        /// <param name="physicalDelete">是否物理删除？true物理删除</param>
        /// <returns></returns>
        /// 修改时间：2022-12-9 10:59:53。新增了参数physicalDelete。修改人：王浩力
        Result Delete(long id, bool physicalDelete = false);

        /// <summary>
        /// 指标统计，最大返回2万个点
        /// </summary>
        /// <param name="zb">指标</param>
        /// <param name="cate">样品类别</param>
        /// <param name="dateStart">开始日期</param>
        /// <param name="dateEnd">结束日期</param>
        /// <param name="well">井号</param>
        /// <returns></returns>
        /// 创建时间：2022-12-30 18:03:59。作者：王浩力
        public List<PointView> GetPointCollection(string zb, string cate, string dateStart, string dateEnd, string well);

        /// <summary>
        /// 根据样本类别统计样本数量，审核通过的，没有被删除的
        /// </summary>
        /// <param name="cate">样本类别</param>
        /// 创建时间：2023-1-3 09:15:58。作者：王浩力
        public int GetCateCount(string cate);


        /// <summary>
        /// 根据样本类别统计样本数量，审核通过的，没有被删除的
        /// </summary>
        /// <param name="cate">样本类别</param>
        /// 创建时间：2023-1-3 10:19:34。作者：王浩力
        public int GetOtherCateCount();
    }
}
